home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / QuickTime VR / MacOS / QuickDraw™ 3D 1.0.6F4 SDK / Development / 3DMF parser / 0.9 version / MFSUBOBJ.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-24  |  16.1 KB  |  483 lines  |  [TEXT/MPS ]

  1. #ifndef MF3DSUBOBJECTS_H
  2. #define    MF3DSUBOBJECTS_H
  3. /*==============================================================================
  4.  *
  5.  *    File:        MFSUBOBJ.H
  6.  *
  7.  *    Function:    Structure definitions for Metafile subobjects.
  8.  *
  9.  *    Author(s):    Rick Wong (RWW)
  10.  *
  11.  *    Copyright:    (c) 1995 by Apple Computer, Inc., all rights reserved.
  12.  *
  13.  *    Change History (most recent first):
  14.  *        Fabio    Changed file name to 8 characters
  15.  *        F3A_RWW    MeshEdges and OrientationStyle.
  16.  *        F2R_RWW    No more complex objects.
  17.  *        F27_RWW    File created.
  18.  *==============================================================================
  19.  */
  20. #if defined(__COMPILING_ON_MACINTOSH__)
  21. #pragma once
  22. #endif
  23.  
  24. #include "MFTYPES.H"
  25.  
  26. /*******************************************************************************
  27.  *    Attributes
  28.  *******************************************************************************
  29.  */
  30. /*==============================================================================
  31.  *    AttributeSet
  32.  *==============================================================================
  33.  */
  34. #define    kMF3DObjAttributeSet                    MF3DObjectType('a','t','t','r')
  35. #define    kMF3DObjAttributeSetText                "AttributeSet"
  36.  
  37. typedef struct MF3DAttributeSetObj
  38. {    MF3DObjHeader
  39. } MF3DAttributeSetObj, *MF3DAttributeSetObjPtr;
  40.  
  41. /*==============================================================================
  42.  *    AmbientCoefficient
  43.  *
  44.  *    0 ≤ ambientCoefficient ≤ 1.0
  45.  *==============================================================================
  46.  */
  47. #define    kMF3DObjAmbientCoefficient                MF3DObjectType('c','a','m','b')
  48. #define    kMF3DObjAmbientCoefficientText            "AmbientCoefficient"
  49.  
  50. typedef struct MF3DAmbientCoefficientObj
  51. {    MF3DObjHeader
  52.     MF3DFloat32            ambientCoefficent;
  53. } MF3DAmbientCoefficientObj, *MF3DAmbientCoefficientObjPtr;
  54.  
  55. /*==============================================================================
  56.  *    DiffuseColor
  57.  *==============================================================================
  58.  */
  59. #define    kMF3DObjDiffuseColor                    MF3DObjectType('k','d','i','f')
  60. #define    kMF3DObjDiffuseColorText                "DiffuseColor"
  61.  
  62. typedef struct MF3DDiffuseColorObj
  63. {    MF3DObjHeader
  64.     MF3DRGBColor            diffuseColor;
  65. } MF3DDiffuseColorObj, *MF3DDiffuseColorObjPtr;
  66.  
  67. /*==============================================================================
  68.  *    HighlightState
  69.  *==============================================================================
  70.  */
  71. #define    kMF3DObjHighlightState                    MF3DObjectType('h','l','s','t')
  72. #define    kMF3DObjHighlightStateText                "HighlightState"
  73.  
  74. #define    kDefaultHighlightState    kMF3DBooleanFalse
  75.  
  76. typedef struct MF3DHighlightStateObj
  77. {    MF3DObjHeader
  78.     MF3DBoolean                highlighted;
  79. } MF3DHighlightStateObj, *MF3DHighlightStateObjPtr;
  80.  
  81. /*==============================================================================
  82.  *    Normal
  83.  *
  84.  *    |normal| = 1
  85.  *==============================================================================
  86.  */
  87. #define    kMF3DObjNormal                            MF3DObjectType('n','r','m','l')
  88. #define    kMF3DObjNormalText                        "Normal"
  89.  
  90. typedef struct MF3DNormalObj
  91. {    MF3DObjHeader
  92.     MF3DVector3D            normal;
  93. } MF3DNormalObj, *MF3DNormalObjPtr;
  94.  
  95. /*==============================================================================
  96.  *    ShadingUV
  97.  *
  98.  *    Any UV parametrization is allowed,
  99.  *    however, shading generally occurs with the following values. 
  100.  *        0 <= shadingUV.u <= 1
  101.  *        0 <= shadingUV.v <= 1
  102.  *==============================================================================
  103.  */
  104. #define    kMF3DObjShadingUV                        MF3DObjectType('s','h','u','v')
  105. #define    kMF3DObjShadingUVText                    "ShadingUV"
  106.  
  107. typedef struct MF3DShadingUVObj
  108. {    MF3DObjHeader
  109.     MF3DParam2D                shadingUV;
  110. } MF3DShadingUVObj, *MF3DShadingUVObjPtr;
  111.  
  112. /*==============================================================================
  113.  *    SpecularColor
  114.  *==============================================================================
  115.  */
  116. #define    kMF3DObjSpecularColor                    MF3DObjectType('k','s','p','c')
  117. #define    kMF3DObjSpecularColorText                "SpecularColor"
  118.  
  119. typedef struct MF3DSpecularColorObj
  120. {    MF3DObjHeader
  121.     MF3DRGBColor            specularColor;
  122. } MF3DSpecularColorObj, *MF3DSpecularColorObjPtr;
  123.  
  124. /*==============================================================================
  125.  *    SpecularControl
  126.  *
  127.  *    0 <= specularControl
  128.  *==============================================================================
  129.  */
  130. #define    kMF3DObjSpecularControl                    MF3DObjectType('c','s','p','c')
  131. #define    kMF3DObjSpecularControlText                "SpecularControl"
  132.  
  133. typedef struct MF3DSpecularControlObj
  134. {    MF3DObjHeader
  135.     MF3DFloat32                specularControl;
  136. } MF3DSpecularControlObj, *MF3DSpecularControlObjPtr;
  137.  
  138. /*==============================================================================
  139.  *    SurfaceTangent
  140.  *==============================================================================
  141.  */
  142. #define    kMF3DObjSurfaceTangent                    MF3DObjectType('s','r','t','n')
  143. #define    kMF3DObjSurfaceTangentText                "SurfaceTangent"
  144.  
  145. typedef struct MF3DSurfaceTangentObj
  146. {    MF3DObjHeader
  147.     MF3DVector3D            paramU;
  148.     MF3DVector3D            paramV;
  149. } MF3DSurfaceTangentObj, *MF3DSurfaceTangentObjPtr;
  150.  
  151. /*==============================================================================
  152.  *    SurfaceUV
  153.  *
  154.  *    Any UV parametrization is allowed,
  155.  *    however, shading generally occurs with the following values. 
  156.  *        0 <= shadingUV.u <= 1
  157.  *        0 <= shadingUV.v <= 1
  158.  *==============================================================================
  159.  */
  160. #define    kMF3DObjSurfaceUV                        MF3DObjectType('s','r','u','v')
  161. #define    kMF3DObjSurfaceUVText                    "SurfaceUV"
  162.  
  163. typedef struct MF3DSurfaceUVObj
  164. {    MF3DObjHeader
  165.     MF3DParam2D                surfaceUV;
  166. } MF3DSurfaceUVObj, *MF3DSurfaceUVObjPtr;
  167.  
  168. /*==============================================================================
  169.  *    SurfaceShader
  170.  *==============================================================================
  171.  */
  172. #define    kDefaultSurfaceShader    NULL
  173.  
  174. /*==============================================================================
  175.  *    TransparencyColor
  176.  *==============================================================================
  177.  */
  178. #define    kMF3DObjTransparencyColor                MF3DObjectType('k','x','p','r')
  179. #define    kMF3DObjTransparencyColorText            "TransparencyColor"
  180.  
  181. typedef struct MF3DTransparencyColorObj
  182. {    MF3DObjHeader
  183.     MF3DRGBColor            transparency;
  184. } MF3DTransparencyColorObj, *MF3DTransparencyColorObjPtr;
  185.  
  186. /*******************************************************************************
  187.  *    Camera attributes:    CameraPlacement, CameraRange, CameraViewPort
  188.  *
  189.  *    For:
  190.  *        OrthographicCamera
  191.  *        ViewAngleAspectCamera
  192.  *        ViewPlaneCamera
  193.  *******************************************************************************
  194.  */
  195. /*==============================================================================
  196.  *    CameraPlacement
  197.  *
  198.  *    upVector ^ (pointOfInterest - location)
  199.  *
  200.  *    |upVector| = 1.0
  201.  *
  202.  *    Default Values:
  203.  *        0 0 1 # location
  204.  *        0 0 0 # pointOfInterest
  205.  *        0 1 0 # upVector
  206.  *==============================================================================
  207.  */
  208. #define    kMF3DObjCameraPlacement                    MF3DObjectType('c','m','p','l')
  209. #define    kMF3DObjCameraPlacementText                "CameraPlacement"
  210.  
  211. typedef struct MF3DCameraPlacementObj
  212. {    MF3DObjHeader
  213.     MF3DPoint3D            location;
  214.     MF3DPoint3D            pointOfInterest;
  215.     MF3DVector3D        upVector;
  216. } MF3DCameraPlacementObj, *MF3DCameraPlacementObjPtr;
  217.  
  218. /*==============================================================================
  219.  *    CameraRange
  220.  *
  221.  *    0 < hither <= yon
  222.  *    default is:
  223.  *        hither  epsilon
  224.  *        yon     infinity
  225.  *==============================================================================
  226.  */
  227. #define    kMF3DObjCameraRange                        MF3DObjectType('c','m','r','g')
  228. #define    kMF3DObjCameraRangeText                    "CameraRange"
  229.  
  230. typedef struct MF3DCameraRangeObj
  231. {    MF3DObjHeader
  232.     MF3DFloat32            hither;
  233.     MF3DFloat32            yon;
  234. } MF3DCameraRangeObj, *MF3DCameraRangeObjPtr;
  235.  
  236. /*==============================================================================
  237.  *    CameraViewPort
  238.  *
  239.  *    -1 <= origin.x <= 1
  240.  *    -1 <= origin.y <= 1
  241.  *    0 < width <= 2
  242.  *    0 < height <= 2
  243.  *    Default is:
  244.  *        -1  1  # origin
  245.  *        2      # width
  246.  *        2      # height
  247.  *==============================================================================
  248.  */
  249. #define    kMF3DObjCameraViewPort                    MF3DObjectType('c','m','v','p')
  250. #define    kMF3DObjCameraViewPortText                "CameraViewPort"
  251.  
  252. typedef struct MF3DCameraViewPortObj
  253. {    MF3DObjHeader
  254.     MF3DPoint2D            origin;
  255.     MF3DFloat32            width;
  256.     MF3DFloat32            height;
  257. } MF3DCameraViewPortObj, *MF3DCameraViewPortObjPtr;
  258.  
  259. /*==============================================================================
  260.  *    FaceAttributeSetList
  261.  *==============================================================================
  262.  */
  263. #define    kMF3DObjFaceAttributeSetList            MF3DObjectType('f','a','s','l')
  264. #define    kMF3DObjFaceAttributeSetListText        "FaceAttributeSetList"
  265.  
  266. enum MF3DPackingEnum
  267. {    MF3DPackingInclude        = 0x00000000,
  268.     MF3DPackingExclude        = 0x00000001
  269. };
  270. typedef    MF3DEnumData    MF3DPackingEnum;
  271.  
  272. typedef    struct MF3DFaceAttributeSetListObj
  273. {    MF3DObjHeader
  274.     MF3DUns32            nObjects;
  275.     MF3DPackingEnum        packing;
  276.     MF3DUns32            nIndices;
  277.     MF3DUns32Ptr        indices;                /* size: nIndices            */
  278. } MF3DFaceAttributeSetListObj, *MF3DFaceAttributeSetListObjPtr;
  279.  
  280. /*==============================================================================
  281.  *    GeometryAttributeSetList
  282.  *==============================================================================
  283.  */
  284. #define    kMF3DObjGeometryAttributeSetList        MF3DObjectType('g','a','s','l')
  285. #define    kMF3DObjGeometryAttributeSetListText    "GeometryAttributeSetList"
  286.  
  287. typedef    struct MF3DGeometryAttributeSetListObj
  288. {    MF3DObjHeader
  289.     MF3DUns32            nObjects;
  290.     MF3DPackingEnum        packing;
  291.     MF3DUns32            nIndices;
  292.     MF3DUns32Ptr        indices;                /* size: nIndices            */
  293. } MF3DGeometryAttributeSetListObj, *MF3DGeometryAttributeSetListObjPtr;
  294.  
  295. /*==============================================================================
  296.  *    VertexAttributeSetList
  297.  *==============================================================================
  298.  */
  299. #define    kMF3DObjVertexAttributeSetList            MF3DObjectType('v','a','s','l')
  300. #define    kMF3DObjVertexAttributeSetListText        "VertexAttributeSetList"
  301.  
  302. typedef    struct MF3DVertexAttributeSetListObj
  303. {    MF3DObjHeader
  304.     MF3DUns32            nObjects;
  305.     MF3DPackingEnum        packing;
  306.     MF3DUns32            nIndices;
  307.     MF3DUns32Ptr        indices;                /* size: nIndices            */
  308. } MF3DVertexAttributeSetListObj, *MF3DVertexAttributeSetListObjPtr;
  309.  
  310. /*==============================================================================
  311.  *    BottomCapAttributeSet
  312.  *==============================================================================
  313.  */
  314. #define    kMF3DObjBottomCapAttributeSet            MF3DObjectType('b','c','a','s')
  315. #define    kMF3DObjBottomCapAttributeSetText        "BottomCapAttributeSet"
  316.  
  317. typedef struct MF3DBottomCapAttributeSetObj
  318. {    MF3DObjHeader
  319. } MF3DBottomCapAttributeSetObj, *MF3DBottomCapAttributeSetObjPtr;
  320.  
  321. /*==============================================================================
  322.  *    Caps
  323.  *==============================================================================
  324.  */
  325. #define    kMF3DObjCaps                            MF3DObjectType('c','a','p','s')
  326. #define    kMF3DObjCapsText                        "Caps"
  327.  
  328. enum MF3DCapsFlags
  329. {    kCapsNone        =    0x00000000,
  330.     kCapsBottom        =    0x00000001,
  331.     kCapsTop        =    0x00000002,
  332.     kCapsDefault    =    kCapsNone
  333. };
  334. typedef    MF3DFlagData    MF3DCapsFlags;
  335.  
  336. typedef struct MF3DCapsObj
  337. {    MF3DObjHeader
  338.     MF3DCapsFlags        caps;
  339. } MF3DCapsObj, *MF3DCapsObjPtr;
  340.  
  341. /*==============================================================================
  342.  *    FaceCapAttributeSet
  343.  *==============================================================================
  344.  */
  345. #define    kMF3DObjFaceCapAttributeSet                MF3DObjectType('f','c','a','s')
  346. #define    kMF3DObjFaceCapAttributeSetText            "FaceCapAttributeSet"
  347.  
  348. typedef struct MF3DFaceCapAttributeSetObj
  349. {    MF3DObjHeader
  350. } MF3DFaceCapAttributeSetObj, *MF3DFaceCapAttributeSetObjPtr;
  351.  
  352. /*==============================================================================
  353.  *    TopCapAttributeSet
  354.  *==============================================================================
  355.  */
  356. #define    kMF3DObjTopCapAttributeSet                MF3DObjectType('t','c','a','s')
  357. #define    kMF3DObjTopCapAttributeSetText            "TopCapAttributeSet"
  358.  
  359. typedef struct MF3DTopCapAttributeSetObj
  360. {    MF3DObjHeader
  361. } MF3DTopCapAttributeSetObj, *MF3DTopCapAttributeSetObjPtr;
  362.  
  363. /*==============================================================================
  364.  *    DisplayGroupState
  365.  *==============================================================================
  366.  */
  367. #define    kMF3DObjDisplayGroupState                MF3DObjectType('d','g','s','t')
  368. #define    kMF3DObjDisplayGroupStateText            "DisplayGroupState"
  369.  
  370. enum MF3DDisplayGroupStateFlags
  371. {    MF3DDisplayGroupNone                = 0x00000000,
  372.     MF3DDisplayGroupInline                = 0x00000001,
  373.     MF3DDisplayGroupDoNotDraw            = 0x00000002,
  374.     MF3DDisplayGroupNoBoundingBox        = 0x00000004,
  375.     MF3DDisplayGroupNoBoundingSphere    = 0x00000008,
  376.     MF3DDisplayGroupDoNotPick            = 0x00000010,
  377.     MF3DDisplayGroupDefaultFlags        = MF3DDisplayGroupNone
  378. };
  379. typedef MF3DFlagData    MF3DDisplayGroupStateFlags;
  380.  
  381. typedef struct MF3DDisplayGroupStateObj
  382. {    MF3DObjHeader
  383.     MF3DDisplayGroupStateFlags    traversalFlags;
  384. } MF3DDisplayGroupStateObj, *MF3DDisplayGroupStateObjPtr;
  385.  
  386. /*==============================================================================
  387.  *    MeshCorners
  388.  *==============================================================================
  389.  */
  390. #define    kMF3DObjMeshCorners                        MF3DObjectType('c','r','n','r')
  391. #define    kMF3DObjMeshCornersText                    "MeshCorners"
  392.  
  393. typedef struct MF3DMeshCorner
  394. {    MF3DUns32                vertexIndex;
  395.     MF3DUns32                nFaces;                /* 0 < nFaces                */
  396.     MF3DUns32Ptr            faces;                /* size: nFaces                */
  397. } MF3DMeshCorner, *MF3DMeshCornerPtr;
  398.  
  399. typedef struct MF3DMeshCornersObj
  400. {    MF3DObjHeader
  401.     MF3DUns32                nCorners;            /* 0 < nCorners                */
  402.     MF3DMeshCornerPtr        corners;            /* size: nCorners            */
  403. } MF3DMeshCornersObj, *MF3DMeshCornersObjPtr;
  404.  
  405. /*==============================================================================
  406.  *    MeshEdges
  407.  *==============================================================================
  408.  */
  409. #define    kMF3DObjMeshEdges                        MF3DObjectType('e','d','g','e')
  410. #define    kMF3DObjMeshEdgesText                    "MeshEdges"
  411.  
  412. typedef struct MF3DMeshEdge
  413. {    MF3DUns32                vertexIndex1;
  414.     MF3DUns32                vertexIndex2;
  415. } MF3DMeshEdge, *MF3DMeshEdgePtr;
  416.  
  417. typedef struct MF3DMeshEdgesObj
  418. {    MF3DObjHeader
  419.     MF3DUns32                nEdges;                /* 0 < nEdges                */
  420.     MF3DMeshEdgePtr            edges;                /* size: nEdges                */
  421. } MF3DMeshEdgesObj, *MF3DMeshEdgesObjPtr;
  422.  
  423. /*==============================================================================
  424.  *    ShaderData
  425.  *==============================================================================
  426.  */
  427. #define    kMF3DObjShaderData                        MF3DObjectType('s','h','d','r')
  428. #define    kMF3DObjShaderDataText                    "ShaderData"
  429.  
  430. enum MF3DShaderUVBoundaryEnum
  431. {    MF3DShaderUVBoundaryWrap    = 0x00000000,
  432.     MF3DShaderUVBoundaryClamp    = 0x00000001,
  433.     MF3DShaderUVBoundaryDefault    = MF3DShaderUVBoundaryWrap
  434. };
  435. typedef    MF3DEnumData    MF3DShaderUVBoundaryEnum;
  436.  
  437. typedef struct MF3DShaderDataObj
  438. {    MF3DObjHeader
  439.     MF3DShaderUVBoundaryEnum    uBounds;
  440.     MF3DShaderUVBoundaryEnum    vBounds;
  441. } MF3DShaderDataObj, *MF3DShaderDataObjPtr;
  442.  
  443. /*==============================================================================
  444.  *    ShaderTransform
  445.  *==============================================================================
  446.  */
  447. #define    kMF3DObjShaderTransform                    MF3DObjectType('s','d','x','f')
  448. #define    kMF3DObjShaderTransformText                "ShaderTransform"
  449.  
  450. typedef struct MF3DShaderTransformObj
  451. {    MF3DObjHeader
  452.     MF3DMatrix4x4        shaderTransform;
  453. } MF3DShaderTransformObj, *MF3DShaderTransformObjPtr;
  454.  
  455. /*==============================================================================
  456.  *    ShaderUVTransform
  457.  *==============================================================================
  458.  */
  459. #define    kMF3DObjShaderUVTransform                MF3DObjectType('s','d','u','v')
  460. #define    kMF3DObjShaderUVTransformText            "ShaderUVTransform"
  461.  
  462. typedef struct MF3DShaderUVTransformObj
  463. {    MF3DObjHeader
  464.     MF3DMatrix3x3        matrix;
  465. } MF3DShaderUVTransformObj, *MF3DShaderUVTransformObjPtr;
  466.  
  467. /*==============================================================================
  468.  *    TrimCurves
  469.  *
  470.  *    Followed by:
  471.  *        MF3DVoidObjPtr                twoDCurve;                { 1-many }
  472.  *                    twoDCurve might be a MF3DNurbCurve2DObjPtr, for example
  473.  *==============================================================================
  474.  */
  475. #define    kMF3DObjTrimCurves                        MF3DObjectType('t','r','m','c')
  476. #define    kMF3DObjTrimCurvesText                    "TrimCurves"
  477.  
  478. typedef struct MF3DTrimCurvesObj
  479. {    MF3DObjHeader
  480. } MF3DTrimCurvesObj, *MF3DTrimCurvesObjPtr;
  481.  
  482. #endif
  483.